﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using KerriganDataContract.Customer;
using KerriganDataContract.Authentification;
using KerriganDataContract;
using KerriganDataContract.Forum;

namespace KerriganInterface.IServiceClient
{
    [ServiceContract]
    public interface IForumService
    {
        [OperationContract]
        CustomerDC GetCustomer(int id);

        [OperationContract]
        AuthenticateUserDC CheckLoginUser(string nickName, string password);

        [OperationContract]
        List<vwGetForumCategory> GetCategoryToDisplay();

        //[OperationContract]
        //List<vwGetForumTopicByMainMessage> GetTopicToDisplay(int id);

        [OperationContract]
        List<vwGetForumMessage> GetMessageToDisplay(int id);

        [OperationContract]
        AuthenticateUserForumDC CheckLoginUserForum(string nickName, string password);

        [OperationContract]
        void AddCategory(ForumCategoryDC bo);

        [OperationContract]
        void AddTopicAndMessage(ForumMessageDC bo);

        [OperationContract]
        List<vwGetForumTopicByPerson> GetTopicByPerson(int idTopic, int idPerson);

        [OperationContract]
        ForumTopicDC GetTopicById(int id);

        [OperationContract]
        void UpdateTopic(int id, ForumDC bo);

        [OperationContract]
        ForumCategoryDC GetCategoryById(int id);

        [OperationContract]
        void UpdateCategory(int id, ForumDC bo);

        [OperationContract]
        void DeleteCategory(int id);

        //[OperationContract]
        //vwGetForumTopicByPerson GetTopicOwner(int id);

        [OperationContract]
        List<vwGetForumTopic> GetTopicToDisplay(int id);

        [OperationContract]
        void DeleteTopic(int id);

        [OperationContract]
        void AddMessage(ForumMessageDC bo);

        [OperationContract]
        ForumMessageDC GetMessageById(int id);

        [OperationContract]
        void UpdateMessage(int id, ForumDC bo);

        [OperationContract]
        Boolean DeleteMessage(int id);

        [OperationContract]
        Boolean AddCustomer(CustomerDC dc);

        [OperationContract]
        void UpdateViews(int id);
    }
}
